<note important>Ceci est un brouillon: 
  * Je ne l'ai pas testé depuis un moment.
  * usage du JE et non du VOUS (pas bien) (en cours)
  * donc intro a revoir (en cours)
  * manque usage [[:wiki:mini-tutoriels]] (en cours)
  * plein de FIXME à voir avec la liste
</note>
----
{{tag>bureau_à_distance}}
----
====== Accéder visuellement à une machine distante via ssh ======

===== Introduction =====

Après une [[:installation]] chez une tierce personne, par exemple chez des amis, clients..., bien souvent il vous faut accéder à leur machine quelques temps après.\\
Cette page se propose de vous permettre de vous y connecter grâce au visionneur de bureau distant déjà installé [[:Vinagre]] et, afin de sécuriser cette connexion, d'utiliser le protocole [[:SSH]]((Secure SHell)).

<note>Pour la suite le serveur est la machine distante que l'on cherche à atteindre (le pc de l'ami quoi)\\
Le client est la machine qui prendra le contrôle (en gros votre pc)</note>

===== Pré-requis =====
==== Côté serveur ====
Pour rappel: Il s'agit ici de la machine que l'on cherche à joindre.
  * [[:tutoriel:comment_installer_un_paquet|Installer le paquet]] **[[apt>openssh-server]]**
  * Dans un [[:terminal]] vérifier que le [[:services|service]] est bien actif en saisissant la [[:commande_shell|commande]] suivante :<code>status ssh</code> si la réponse est <code>ssh start/running, process XXXX</code>où XXXX est un nombre, c'est que le [[:services|service]] est bien opérationnel sinon il faut le démarrer par: <code>sudo service ssh start</code>
  * Connaitre son adresse IP du réseau local (pour une machine derrière une box): FIXME trouver mieux (awk peut-être)<code>ifconfig | grep "Bcast"</code>vous retiendrez l'adresse de type //inet adr:192.168.0.10//
  * Sur la box rediriger le port 22 vers le pc.
<note tip>
  * sur la [[:Freebox]]V5 tout se passe dans [[https://subscribe.free.fr/login/|l'interface de gestion de votre compte]].FIXME ou adresse ip?
    * Dans la section **Internet** sélectionner la partie **Configurer le routeur**.
    * Vérifier que le mode routeur est bien activé et dans le bas de cette page redirigé le port 22 vers l'adresse récupérée plus tôt //192.168.0.10//:22. FIXME: UDP ou TCP ? moi j'ai mis les 2
    * Enregistrer ces nouveaux paramètres puis rebooter la freebox.
  * sur la [[:FreeboxV6]] rendez-vous sur votre interface à l'adresse FIXME à compléter
  * Sur une BBox, rendez-vous sur [[http://192.168.1.254]] ou [[http://gestionbbox.lan]] FIXME à compléter
  * Sur une Livebox, rendez-vous sur FIXME à compléter 
</note>
  * Connaitre son adresse IP hors réseau local, c'est à dire votre adresse public visible sur le net, en se rendant par exemple sur [[http://monip.org|monip.org]] ou en saisissant dans un [[:terminal]] la [[:commande_shell|commande]] suivante:<code>wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1</code>
  * Désactiver les effets graphiques. Par exemple sur l'environnement [[:Gnome]] il s'agira de //Système → Préférences → Apparences// → Onglet "Effets" → cocher "Aucun".\\ FIXME Toujours utile ? Sous [[:Natty]] cette option ne semble plus possible, comment faire si c'est toujours nécessaire ? (Pas encore cherché dans le forum)
  * Penser à modifier la configuration du fichier **/etc/ssh/sshd_config**. Pour en savoir plus, se reporter à la section [[vnc_via_ssh#securite|sécurité]].

==== Côté Client ====

__**Rien**__ tout est installé (un café si vous voulez :-)).

===== Première Connexion =====
Depuis la machine cliente (votre pc), saisissez dans un [[:terminal]] la [[:commande_shell|commande]] suivante:
<code>ssh -L 5900:localhost:5901 <Login>@<Adresse-ip> -p <Port></code>
Où:
  * **<Login>** est le nom de l'utilisateur sur l'ordinateur distant.\\
  * **<Adresse-ip>** est l'adresse "internet" du serveur.\\
  * **<Port>** est le port indiqué à rediriger dans l'interface de gestion soit 22 par défaut (si vous souhaitez modifier cette valeur, reportez-vous [[#Sécurité|plus bas]]).\\
<note tip>L'option //**-L 5900:localhost:5901**// est facultative. C'est elle qui permet d'accéder au serveur graphique distant en passant par [[:ssh]]. Si vous comptez utiliser uniquement le [[:terminal]], vous pouvez retirer cette partie</note>
Par exemple, pour vous connecter à la machine distant dont le nom d'utilisateur de la session est //ami//, l'adresse public "internet" est //123.45.67.890// et dont le port redirigé est //22//, saisissez
<code>ssh -L 5900:localhost:5901 ami@123.45.67.890 -p 22</code>

Vous devriez avoir une demande de confirmation la première fois pour valider votre connexion au serveur, puis le mot de passe du compte distant (donc le mot de passe du compte utilisateur sur la machine serveur) doit vous être demandé.\\
Vous êtes maintenant sur le serveur, c'est à dire la machine distante.

===== Et maintenant ? =====

Vous avez donc accès à la machine distante, le problème c'est que la personne qui se trouve devant physiquement (votre ami, client...) ne voit pas forcément ce que vous faites, ou vous n'êtes pas très à l'aise avec la [[:tutoriel/console_ligne_de_commande|ligne de commande]].\\
Pour rappel, vous avez laissez ouvert le [[:terminal]] précédemment connecté. FIXME si on met & à la fin de la ligne

==== Retour visuel de la ligne de commande ====

Sur le serveur, demander à l'utilisateur distant d'ouvrir un [[:screen]] avec le nom de son choix.\\
Par exemple, pour une session screen nommé **ami**, il saisira dans un [[:terminal]] la [[:commande_shell|commande]] suivante:
<code>screen -S ami</code>et de votre côté entrez dans le [[:terminal]] connecté par
<code>screen -x ami</code>Ce que vous saisirez sera maintenant affiché en parallèle sur le [[:terminal]] distant (donc sous les yeux de votre ami, client...).

==== Retour graphique de l'environnement ====

Si vous souhaitez accéder graphiquement au serveur, vérifier sur celui-ci que [[:vnc|vino-server]] est bien dans les applications au démarrage donc bien actif:
<code>ps -ef | grep vino-server</code>si vous avez pour seule réponse un retour au prompt c'est qu'il vous faut le démarrer par
<code>/usr/lib/vino/vino-server &</code> puis de votre côté entrer
<code>vinagre localhost:1</code>Une demande d'autorisation doit apparaitre sur l'écran serveur qu'il faut donc faire valider par la personne devant l'ordinateur distant.\\
Vous devriez être maintenant sur le pc distant et la personne qui se trouve devant physiquement (votre client, ami...) doit voir toutes vos actions.\\
FIXME remettre une note sur les effets graphique ? ou déplacer pré-requis à ce sujet ici?

===== Quitter la connexion distante =====

Côté client, pour quitter votre accès à distance, quittez vinagre et les terminaux ouverts.\\
Côté serveur, vous pouvez arrêter le serveur ssh par
<code>sudo service ssh stop</code>
et [[:vnc|vino-server]] par 
<code>sudo killall vino-server</code> FIXME Pas mieux ?\\ Quitter également les différents [[:terminal|terminaux]] si vous avez utilisé [[:screen]].

===== Sécurité =====

  * Afin de sécuriser un peu plus, il est possible de choisir la redirection de [[:ssh]] sur un autre port que le 22. Les ports habituellement usités sont visibles dans le fichier **/etc/services**. Choisissez en donc un qui n'y apparait. \\ 
<note tip>Par exemple si vous souhaitez utiliser le port 2653 (FIXME à priori pas de souci), vous pourrez vérifier si cette valeur n'est pas déjà courrament utilisée en saisissant dans un [[:terminal]] la [[:commande_shell|commande]] suivante: <code>grep -w 2653 /etc/services</code>Si vous avez un retour au prompt pour seul réponse, c'est que vous pouvez utiliser ce port.\\ Si vous faites l'essai avec le port 22, vous constaterez qu'il s'agit du port attribué à SSH\\ FIXME On redirige bien 2653 vers 192.168.0.10:22 ? </note>
  * Si vous ne souhaitez pas que le "démon" [[:ssh]] ne soit activé à chaque démarrage, deux options:
     * [[:tutoriel:comment_modifier_un_fichier|modifier avec les droits d'administration]] le fichier **/etc/init/ssh.conf** et commenter (ajouter un # au début de) la ligne **//start on filesystem//**.
     * renommer le fichier **/etc/init/ssh.conf** pour qu'il ne soit pas vu par le système. Par exemple dans un [[:terminal]], saisissez la [[:commande_shell|commande]] suivante:<code>sudo mv /etc/init/ssh.conf{,.nostart}</code>
    * Pour reprendre la main les prochaine fois, il faudra donc demander à votre ami de démarrer [[:ssh]] tel qu'indiqué dans les [[vnc_via_ssh#pré-requis#côté_serveur|pré-requis]].
  * Même chose pour vino-server, que vous pouvez retirer des applications au démarrage (depuis le menu //Système -> Préférences// sur Gnome). Penser à le démarrer en cas de besoin (cf [[vnc_via_ssh#retour_graphique_de_l_environnement|cette section]])
  * Vous pouvez utiliser une sécurité accrue plus pratique en utilisant [[:ssh#authentification_par_un_systeme_de_cles_publiqueprive|SSH et une clé distante]].\\

===== Voir aussi====
  * [[:SSH]]
  * [[:Vino]]

----
//Contributeurs: [[:utilisateurs:fabux]]//